In teleconferencing applications between computers that are coupled by a networking or communication medium, data is generally compressed. Data is compressed for a number of reasons, including bandwidth limitations in the networking or communication medium, the information rate of the processors providing data to the medium, and the number of processors (and by the number of processes on each processor) trying to send data to the medium simultaneously.
Unfortunately, a large number of compression algorithms and processes are available, complicating data communication. Because the computer systems which are coupled for teleconferencing need not be of the same type, nor even operate on the same platform, and frequently do not have common teleconferencing applications or other telecommunication applications available thereon, compatibility problems frequently arise. Selecting a data compression process or algorithm where several are available, that is compatible with at least one decompression process or algorithm on a remote processor can be problematic, especially given the fact that by definition data communication between the computer systems is not yet possible. Selecting a codec, or "compression/decompression" pair of processes, on remote processors can thus be difficult.
When an application detects a problem, in that the data being received is compressed and that no decompression algorithm or process is available on the current processor to decompress the data, the application generally either terminates, or alternatively, a receiving processor on which an application has difficulty decompressing data may send a signal to the transmitting processor indicating that a problem has been detected, and requesting that the transmitting processor switch to a different compression algorithm. Thus, the transmitting processor will switch to different compression process and the receiving processor will determine if the received data can be decompressed.
Although this hit-and-miss approach to codec negotiation is occasionally successful, the options become unmanageable as the number of codecs or the number of parties involved in a teleconference increases.
Therefore, a need has arisen for an automatic codec selector that determines what decompressors are available on each message recipient, determines what compressors are available on the current transmitting processor, and selects the best codec possible. The need is also arisen for a codec selector that automatically changes from one codec to another as new members join, or old members leave, a teleconference.